Platform for natural language generation editor

ABSTRACT

The present invention is a system and method for generating narrative text utilizing data input from one or more data sources to drive the creation of a narrative text output. Narrative text is generated in accordance with sets of data that provide the scope of text to be generated. A narrative text editor permits automatic generation of narrative text automatically using pre-defined scope for the generated text, or under the guidance of scope input by a user. Generated text retains links to the origin structure and scope used in creation of the narrative text permitting quick troubleshooting of issues in the narrative text generation and rapid review and updating under the guidance of established rule sets or system users.

COPYRIGHT AND TRADEMARK NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction of the patent document or thepatent disclosure, as it appears in the Patent and Trademark Officepatent file or records, but otherwise reserves all copyright rightswhatsoever. Trademarks are the property of their respective owners.

BACKGROUND

As content providers have moved to broaden and deepen their own news andother media offerings, they have accordingly sought ways to improveefficiency and minimize the cost of content generation. Contentgeneration produced in a narrative language context is particularlydifficult and costly to provide, but highly desired by clients ofsystems that produce news and other text media offerings. Building aframework for automatic generation of narrative language text fromincoming data minimizes the need for human interaction in the creationof narrative language text, and presents a cost efficient method for thetransformation of data into narrative language text.

The transformation of data into one or more automatically generatednarrative language articles is subject to the identification of the datathat is of interest to consumers of that data. After the identificationof data of interest, the narrative generation must be structured toprovide text reflecting the maximum flexibility, breadth, and variationthat the data encompasses.

BRIEF DESCRIPTION OF THE DRAWINGS

Certain illustrative embodiments illustrating organization and method ofoperation, together with objects and advantages may be best understoodby reference detailed description that follows taken in conjunction withthe accompanying drawings in which:

FIG. 1 is an exemplary view of a narrative text editor functionconsistent with certain embodiments of the present invention.

FIG. 2 is an exemplary process flow of a narrative text generatorfunction consistent with certain embodiments of the present invention.

FIG. 3 is an exemplary screen shot of a narrative text editor consistentwith certain embodiments of the present invention.

FIG. 4 is an exemplary screen shot of a narrative text editor having aformatting information view consistent with certain embodiments of thepresent invention.

FIG. 5 is an exemplary screen shot of a narrative text editor with abranch construction view consistent with certain embodiments of thepresent invention.

FIG. 6 is an exemplary screen shot of a narrative text editor havingpost detail code style view consistent with certain embodiments of thepresent invention.

DETAILED DESCRIPTION

While this invention is susceptible of embodiment in many differentforms, there is shown in the drawings and will herein be described indetail specific embodiments, with the understanding that the presentdisclosure of such embodiments is to be considered as an example of theprinciples and not intended to limit the invention to the specificembodiments shown and described. In the description below, likereference numerals are used to describe the same, similar orcorresponding parts in the several views of the drawings.

The terms “a” or “an”, as used herein, are defined as one, or more thanone. The term “plurality”, as used herein, is defined as two, or morethan two. The term “another”, as used herein, is defined as at least asecond or more. The terms “including” and/or “having”, as used herein,are defined as comprising (i.e., open language). The term “coupled”, asused herein, is defined as connected, although not necessarily directly,and not necessarily mechanically.

Reference throughout this document to “one embodiment”, “certainembodiments”, “an exemplary embodiment” or similar terms means that aparticular feature, structure, or characteristic described in connectionwith the embodiment is included in at least one embodiment of thepresent invention. Thus, the appearances of such phrases or in variousplaces throughout this specification are not necessarily all referringto the same embodiment. Furthermore, the particular features,structures, or characteristics may be combined in any suitable manner inone or more embodiments without limitation.

Reference throughout this document to a network can be any computer orinformation network capable of marshalling, transmitting, routing,directing and/or forwarding data between two or more hardware devicesand/or software modules. For example, a network can be a local areanetwork (LAN), a wide area network (WAN), a wireless network,cloud-based networks, or the Internet. A network can include one or morewired and/or wirelessly connected hardware devices including servers,computers, tablets, mobile devices, and handheld devices.

References throughout this document to code can be, but are not limitedto, micro-code or micro-instructions, machine instructions, such asproduced by a compiler, script created code, code used to produce a webservice, and files containing higher-level instructions that areexecuted by a computer using an interpreter. For example, embodimentsmay be implemented using Java, C++, or other object-oriented programminglanguages and development tools. Additional examples of computer codeinclude, but are not limited to, control data, encrypted code, andcompressed code.

Reference throughout this document to a processor can be any processor(e.g., a central processing unit (CPU), an application-specificintegrated circuit (ASIC), a field programmable gate array (FPGA))configured to execute one or more instructions received from, forexample, a memory device or construct. In an exemplary embodiment, theprocessor can be a Reduced Instruction Set (RISC) processor. In anexemplary embodiment, the processor may send information (e.g., data,instructions and/or network data packets) to and/or receive informationfrom any memory device or network card in data communication with theprocessor.

Reference throughout this document to a memory can be any memory deviceor implementation, for example cloud-based storage devices, RAM, ROM, ahard disk drive, an optical drive, or other removable media configuredto store information.

Reference throughout this document to a relational database, includingone or more relational database tables, can be any relational databasesuch as, for example, the relational database engine provided by Oracle,Microsoft SQL Server, MySQL, PostgreSQL, Informix and/or other databasesthat create and maintain databases using relational structures anddatabase management software.

Reference throughout this document to a data store can be any data storesuch as a third party Application Programming Interface into a datasource, a relational database, a non-relational database, or a file. Thedata store can also indicate stores of data files that are in commaseparated value (CSV) formats or data stored in a tabular format, suchas spreadsheets as one example.

Reference to “tone” in this document refers to the mood of the generatednarrative content created through the use of figurative language, pointof view and word choice. In a non-limiting example, a positiveperformance tone for generated narrative content can be associated witha positive, sanguine, energetic, hopeful, or other similar mood to thegenerated narrative content.

Reference to “theme” in this document refers to content associated withand/or based at least in part on a given theme, such as a series ofevents, an ongoing topic of interest, a predefined author style, such aswriting or composition style of a given author, journalist or otherindividual. In a non-limiting embodiment, a narrative framework caninclude phrases and/or phrase variations constructed in a similar style,fashion and/or manner to those of the author, journalist or otherindividual.

Reference throughout this document to a “narrative framework” refers toa data construct or module implemented in software and maintained in ahardware storage device and can include phrases and/or other kinds ofinformation and structural and/or data connections between the phrasesand other information contained within the narrative framework.

Reference throughout this document to an “origin structure” refers toany logical structural framework that contains a set of data conditions,logic for evaluating those data conditions within a processor to achievea Boolean result, one or more input data sources, and produces as outputone or more narrative text strings based upon the data input and thelogical evaluation of the data conditions, including conditions that maybe evaluated in a recursive fashion. A narrative framework is anon-limiting example of an origin structure that may be composed ofbranches, conditions to be evaluated, and variations used as alternativetext strings in multiple text string generation actions.

Reference throughout this document to a “Boolean result” refers to aresult where one of two conditions is selected, either a TRUE or FALSEor YES or NO result is returned as a result of the evaluation.

Reference throughout this document to a Graphical User Interface (“GUI”)may include displays having message areas, interactive fields, pop-upwindows, pull-down lists, notification areas, menus, tabs, and/orbuttons that can be operated by the user. The GUI may include multiplelevels of abstraction including groupings and boundaries. It should benoted that the term “GUI” may be used in the singular or in the pluralto describe one or more GUI's, and each of the displays of a particularGUI may provide the user of a client device with a user-friendlyinteractive environment and information.

Reference throughout this document to a “post” refers to the text outputfrom the narrative framework for a particular scope when generating atext article or report.

Reference throughout this document to “scope” refers to the data thatmakes a particular post unique and different from all other posts.

A narrative text generation project is composed of the basic functionsof uploading data from one or more data sources, accessing that uploadeddata and optionally determining the one or more methodologies forgrouping the data so as to provide a meaningful expression of that datain generated narrative text, optionally the data to achieve a derivationof items of interest, processing the data using one or more originstructures to automatically generate one or more narrative text articlesfrom the input data, and performing a quality assurance analysis togenerate feedback on the generated narrative text prior to thedissemination of the articles generated for the project.

In an exemplary embodiment, the upload of data from one or more datasources is the general starting point for the creation of narrative textthat expresses some insight or interesting aspect captured within thedata. In a non-limiting example, data from a spreadsheet or other CommaSeparated Value (CSV) data source may be received from a data source incombination with either general or specific requests for articles orother informative narrative text. In an embodiment where a specificrequest for particular areas of interest is received, the creation ofnarrative text from the input data will proceed using the scopetransmitted in the specific request. In this exemplary embodiment, thescope transmitted provides the guidance for the filtering and extractionof the data of interest that satisfies the scope of the request. One ormore conditions reflecting the scope may be initiated by selecting adata variable, row, column, or file where the scope is directly relevantto the data selected for evaluation.

In an embodiment where a general request for areas of interest isreceived, the derivation of areas of interest in line with the generalrequest is complex and may require one or more filter for modificationactions for the conditions selected to achieve a scope that meets therequest. This embodiment also includes ad hoc and speculative scopedefinitions in the process of arriving at one or more areas of interestthat are consistent with the general request. In non-limiting examples,modification actions may include processing on text such ascapitalization or other text modification or mathematical processing ondata to derive a new data column for further processing such as percentchange in an existing column from a previous time period to the currenttime period.

The filter actions are performed on the input data source(s) usingdatabase query language functions and may permit the selection of anysegment of data from the input data source files, from a single row,multiple rows, multiple columns, or an entire data file. Any selectioncriteria consistent with the areas of interest expressed, or of ad hocor speculative scope so as to arrive at one of the areas of interestexpressed, may be used to group the data from the data source to be usedin the generation of one or more conditions for narrative textgeneration.

Additionally in this exemplary embodiment, formatting options for datavariables inserted dynamically into the narrative text strings may bespecified or selected by a user. Options may be presented to the userfor selection. Such options may include providing case or otherinformation associated with text data, date data may have displayoptions for use in formatting the data associated with dates, andnumbers may have formatting information such as absolute value, decimalpoint location, or display in AP or ordinal formats.

In an embodiment, a condition is evaluated based upon input data fromthe data source and associated logic of an origin structure andperformed in a processor having access to the origin structure and datasufficient to perform a Boolean evaluation and generate a Boolean resultfor the condition. The condition may be evaluated through additionalembedded branches that then must be evaluated prior to completing theevaluation of preceding parent branches. In this condition, the embeddedbranches must be evaluated to completion before the parent branch may beevaluated to a Boolean result. These embedded branches may form arecursive evaluation structure in which each subsequent branch isevaluated to a Boolean result, and the condition directs the creation ofnarrative text in the form of natural language text strings addressingeach branch included in the sequence of branches.

In this exemplary embodiment, an input data source may be a relationaldatabase, a non-relational database, an excel file, a file in JavaScriptObject Notation (JSON) format, an XML file, a spreadsheet, a file intabular format, or a file in a comma separated value (CSV) format. Anorigin structure may contain one or more conditions that evaluate to aBoolean result and the Boolean evaluation is performed in a processorhaving access to logic and data sufficient to perform the Booleanevaluation, where the rendered text from a condition may include theneed to evaluate nested conditions with further text options and mayinclude other conditions that must be evaluated before the parentcondition result may be completed. Such nested conditions may consist ofmultiple tiers of conditions to successfully generate narrative textthat expresses the scope of the data input, or that may vary portions ofthe generated narrative text based upon data conditions withoutaffecting non-selected portions of the generated narrative text.

In an exemplary embodiment, the evaluated condition directs the creationof natural language text strings. A narrative editor provides the userwith the ability to create and direct this creation of natural languagetext strings from a single condition, or from multiple conditions thatmay then be combined to form longer or more complex natural languageorigin structures. Building a condition may begin with the selection ofa data field, row, or table of interest and within the scope of interestof the user. Upon selection of data of interest, a branch may be createdaround which conditional logic may be specified for evaluation. Thenarrative editor may assist the user through the display of drop downviews populated with one or more data functions such as a list ofexpressions available to the user for evaluation. A search function mayalso be provided to quickly locate the expression(s) that are desiredfor the created branch.

In the exemplary embodiment, additional data functions may be added orcreated to present the user with greater variation or more complexcomparisons in evaluating the selected branch. In this exemplaryembodiment, the insert function permits the user or the narrative editorsystem to continually update the expressions available to evaluate dataassociated with any branch. Individual branches may be input by a userto create branches for further evaluation that are specific to the scopein which a user is interested. Branches may also be deleted by a user toremove branches in which the user no longer has an interest, or when thebranch evaluates to a scope that is contrary to the interest of theuser. Thus, the narrative editor presents the user with the ability tocreate, edit, update, and/or delete branches to be evaluated. Theseabilities are provided as insert functions to an expression drop downbox.

In the exemplary embodiment, multiple expressions selected for theevaluation of a branch may be joined together. Additionally, multipleconditions may be added to the evaluation of the branch. Joinedexpressions and multiple conditions may be related through the use ofBoolean operators such as “AND” or “OR” to present greater flexibilityin the evaluation of the branch and provide greater variability in thecreation of narrative text. Additionally, the user may provide logicconsiderations such as actions to take if the branch evaluates to aFALSE value, as opposed to actions to be taken if the branch evaluatesto a TRUE value. Additional logical considerations may also be added toprovide the user with the ability to optimize or personalize further theexpression of the narrative text created from the branch.

In a non-limiting example, a user may be presented with the narrativetext generated by the selected branches and conditions as evaluated bythe logic and expressions specified. The system may present one of twotypes of displayed narrative text strings: a preview display and agenerated text display. The main display (the preview version) is simplya version of the article that by default shows the first text option foreach of the top-level branches, and can be navigated by clicking onnested branches. It also allows a user to preview other text options incontext by clicking on one of the variations at the bottom of the screento observe the change reflected up top in the narrative preview. Theuser may then switch to a second display view, which is an output viewthat shows a generated piece of narrative text.

The narrative editor may reveal all branches and nested branches in thegenerated narrative text. The user may select the branch or nestedbranch presented in the narrative text to be taken to the portion of theorigin structure that created the selected narrative text portion. Inthis manner, the user may review the origin structure for accuracy andcompensate for, or correct, any portion of the origin structure thatcreated narrative text strings that were incorrect, undesirable, orotherwise not consistent with the scope required. In an alternativeembodiment, the generated narrative text may be saved to a digitalmemory store and transmitted to a QA process either upon saving thegenerated narrative text, or recalled from digital storage for laterreview either by the user or a QA process.

In an exemplary embodiment, the narrative editor may present the userwith a function to compare variations between previous data values andmore recent data values for the same input data source. When the user isinterested in changes to data sets that have occurred over a time span,the function may utilize an origin structure that was created for aparticular set of conditions and branches in the past and compare a morerecent upload of the same data conditions and branches to derivedifferences in the data set between the previous data values and thecurrent data values. The difference may then be input to the narrativeeditor as the set of conditions and branches to be evaluated. Thisevaluation may then generate narrative text built around the reportingof the differences between the previous data values and the current datavalues for the input data source.

Upon completion of the generation of the narrative text strings, allbranches may be collapsed to present a display of the code languagecreated from the selection and definition of the conditions so as topermit the user to utilize the system from a code-style point of view.Upon the initiating the operation of the narrative text generator forthe defined origin structure, the narrative text may be presented to theuser in a display view for review.

To maintain the quality of the articles produced by a narrative textgenerator for any given project, a quality assurance (QA) function isautomatically applied to the generated text. The QA function associatedthe branch, embedded branch, condition, and or variation for eachportion of generated text in all posts, for each scope requested. Anerror may be automatically generated by the system or by a user and maybe defined as incorrect words, sentence inconsistencies, grammarinfractions, tone inconsistencies, and word choices inconsistent withthe scope within the narrative text analyzed.

With regard to FIG. 1, this figure presents an exemplary view of anarrative text editor function consistent with certain embodiments ofthe present invention. The primary focus of a project is the creationand optimization of narrative text generated in natural language, wherethe narrative text represents data input from a data source evaluated inaccordance with the scope identified for the project. A Boolean is theexpected result from the evaluation. In this figure, the text generationproject begins with the initialization of the narrative text editor 100module. The narrative text editor downloads data from one or more datasources 104 that are to be used as the basis for the creation ofnarrative text. The input data is grouped automatically according to arule set describing a scope for the text to be generated, or groupedunder the direction of a user. The user may load a pre-set scope orcreate a new scope for use in the grouping the input data and definingthe narrative text to be generated.

In an exemplary embodiment, the narrative editor creates one or moreconditions 112 either automatically or under the direction of a userwherein the condition 112 uses logical evaluation criteria 116 to selectone of two possible results, a Boolean result, for the condition 112.The origin structure 118 generates one or more narrative text stringsusing the scope of the data grouping based upon the evaluation of theconditions 112. The narrative editor displays the generated narrativetext 120. Individual branches may be input by a user to create branchesfor further evaluation that are specific to the scope in which a user isinterested. Branches may also be deleted by a user to remove branches inwhich the user no longer has an interest, or when the branch evaluatesto a scope that is contrary to the interest of the user. Thus, thenarrative editor presents the user with the ability to create, edit,update, and/or delete branches to be evaluated. These abilities areprovided as insert functions to an expression drop down box.

In a non-limiting example, the origin structure may present a logicalhierarchy that is composed of branches that represent a particular datapoint to be evaluated, where the branch presents a different resultbased upon a condition 112 to be selected, and variations that may beincluded to provide different text strings to provide variety in theresulting generated text. The generated text 120 is then visible to theuser for review.

With regard to FIG. 2, this figure presents an exemplary process flow ofa narrative text generator function consistent with certain embodimentsof the present invention. When a project is first created, it comprisesa narrative generator and one or more data sources. As a function of theproject, a user may desire to review the results created by thenarrative text generator to optimize the generated text so as to provideassurance that the quality of the generated text meets the user'sstandards prior to publishing the post to a client. To initiate thisfunction, the narrative text editor uploads data to be used in thegeneration of narrative text strings from one or more data sources 200.

In an exemplary embodiment, upon data upload, where the data may be in avariety of formats such as a relational database, a non-relationaldatabase, an excel file, a file in JavaScript Object Notation (JSON)format, an XML file, a spreadsheet, a file in tabular format, or a filein a comma separated value (CSV) format, the narrative editor mayautodetect the types of data contained in the incoming data fields. At208, a user may then initiate one or more new narratives by enteringrequests for particular data to be evaluated and defining the scope ofthe text to be generated. At 212, the narrative editor system groups thedata according to the scope or user requests. In an alternativeembodiment, a pre-defined scope may be recalled from digital storage andpresented to the narrative editor to follow in grouping the data fromthe data source(s). At 216, the narrative editor presents the user withthe groupings thus far defined and provides the user with the option toselect a grouping for use in the current iteration of narrative textgeneration.

In an exemplary embodiment, at 220 upon selection of the desiredgrouping, the system may display the data associated with the selectedgrouping as it has been uploaded from the data source. The user, at 224,is provided with the option to filter, sort, or limit the data withinthe selected grouping prior to the generation of narrative text strings.In this manner, a user may remove portions of the group that have lessinterest, or limit the processing to a representative sample of thegroup so as to reduce the amount of time required to produce thenarrative text for the user's review. If a filter, sort or limitcriterion is selected, the system is operable to apply the selectionoption, at 228, to the data contained in the selected grouping. If nofilter, sort, or limit option is selected, the data grouping isprocessed as selected.

At 232, one or more conditions are evaluated in a processor to a Booleanresult based upon input data from the data source and associated logicof the origin structure. In this embodiment, posts may be narrative textgenerated from the evaluated condition. At 236, the narrative textstrings created in accordance with the input grouping are designated asposts. The posts are customized for particular objectives and eachsegment of narrative text is associated with an origin structure. Theposts are published to the narrative editor display view for review by auser, or in an alternative embodiment, may be stored in digital memoryfor later review.

In an exemplary embodiment, the narrative text display may present theorigin structure to a user when a segment of narrative text is selected,and the origin structure is stored with optimization instructions in alog maintained on an electronic storage device. During review of thegenerated narrative text, if inconsistencies, errors, or other issuesare discovered the user may select that section of the generated textwithin the display view of the narrative text display. Upon selection,the portion of the origin structure that generated the selectednarrative text string will be presented. The user may select thedisplayed portion of the origin structure to review, update, or correctthe origin structure to resolve the issue. Alternatively, the user mayelect to pass observations to the QA process for later resolution by aQA user.

With regard FIG. 3, this figure presents an exemplary screen shot of anarrative text editor display consistent with certain embodiments of thepresent invention. In this non-limiting example, a narrative text editorproject is presented. The user may select an option 300 to build anarrative by selecting and entering data that is of interest to the userfor this project, or the user may select an option to preview the textto be generated from the data entered and/or selected.

The data 304 has been grouped in accordance with either pre-set ordynamically entered scope for the generation of narrative text.Selecting the design option permits the user to activate apre-determined rule set for use in generating narrative text, or permitthe user to select one or more data groupings 304 from the data pane orenter data to be used in conjunction with the uploaded and selected datagroupings 304.

The narrative text editor display pane 308 provides a view ofrepresentative generated narrative text. The generated narrative textretains links to the origin structure for the narrative text. During areview of the generated narrative text, when a user selects a datavariable 310 in the generated text, the selected data variable 310 ishighlighted and the link to the origin structure is active.

With regard to FIG. 4, this figure presents an exemplary screen shot ofa narrative text editor having a formatting information view consistentwith certain embodiments of the present invention. In this non-limitingexample, a formatting pane 404 may be active to display options forformatting the data type associated with the currently selected datavariable 408. In a non-limiting example, the formatting pane 404 mayprovide a listing of the options for formatting the selected variable408. In this example, text data may have case options displayed, datedata may have date display options displayed, and number data may havecontrols over absolute value, decimal points or displaying in AP orordinal formats. A user may also input data directly into the narrativetext editor display pane 412 for inclusion in the generated narrativetext.

With regard to FIG. 5, this figure presents an exemplary screen shot ofa narrative text editor with a branch construction view consistent withcertain embodiments of the present invention. In an exemplaryembodiment, an origin structure provides the dynamic structure for theevaluation of choices that are defined by the system and/or those thatare user defined to express the scope of narrative text to be generated.The narrative text editor imports branches to be evaluated, permits thedefinition of branches by a user, or any combination of automatic anduser defined branch definition actions. In this embodiment, upon theselection of branch selector, indicating that a user is initiating abranch definition action, the narrative editor inserts the branchindication into the origin structure and displays a view of the branchinput function 500.

In a non-limiting example, the branch input function 500 is operable toopen one or more condition input areas 504. A condition input area 504may take the form of a drop down menu, a drop down display, an inputbox, or any other displayable input form that is consistent with thecreation and definition of a condition to be evaluated by the system. Afirst condition input area 504 opens in the narrative editor displaypanel 508 to prompt a user to create or edit a condition 512. The usermay select one or more of the data functions 516 that are available fromthe input data source. The selection may be performed by selecting adata function 516 from a list presented as a drop down menu, a prefilledlist, or any other list display format. The list presented to the usermay be searchable to provide the user with a quick means to review anddiscover data functions 516 that are available for use with thecondition 512.

Upon selection of a data function 516, a conditional display menu 520 inthe form of a drop down menu, or any other preferred list display, ispresented to the user. The narrative editor may also import conditionsto be evaluated automatically based upon a pre-determined rule set. Theconditional display menu 520 presents the user with one or more optionsfor conditions to be evaluated for the data function 516 currentlyselected. In a non-limiting example, options may include “is greaterthan”, “is less than”, or any other condition that may be evaluated toachieve a TRUE or FALSE, Yes or No, result. A data expression displaylist 524 may also be populated for the selected data function 516 uponselection. Additionally, the user may add other data functions to theexpression display list 524 to accommodate more advanced or newlycreated comparisons for the condition. These additional comparisons maybe added by selecting an insert edit function and entering theadditional comparison into the expression display list 524.

In the exemplary embodiment, the narrative editor permits the creationof more complex branches through joining multiple conditions for a givenbranch 500. Additional conditions may be selected and defined in thesame manner as the creation of the initial condition. Subsequentconditions may then be joined utilizing AND, OR, or other conditionallogic to perform multiple condition evaluations for multiple datafunctions. In this embodiment, each added condition evaluation presentsthe user with the ability to add logical extensions to the originstructure when creating narrative text for the data being evaluated.

In this exemplary embodiment, additional blocks of conditions 528 may bespecified by a user or the system. The additional blocks of conditions528 may be selected and specified in the same fashion as the previouslydefined conditions 504, but may represent a differing scope of data tobe considered, or may represent an ad hoc set of conditions that a useris using for review to determine the sufficiency and efficacy of thegenerated narrative text in representing the desired scope of generatedtext. The additional blocks of conditions 528 may be joined to earlierblocks of conditions 504 through the use of AND, OR, or other logicaloperations. The user may select or input the logic to be used whenjoining later blocks of conditions to earlier blocks of conditions. Inthis fashion, very complex narrative text may be generated fromrelatively straightforward definition of the conditions and datafunctions to be evaluated.

Upon completion of the selection of conditions for the branch 500,bridge text or other text that may be important to readability orvariation of the narrative text to be generated may be specified 530.This variation text 530 presents the system or the user with the abilityto vary the generated narrative text so as to minimize any unnaturaltone or robotic character in the generated narrative text. The user mayinsert additional variation text strings to create very broad character,tone, or style choices for the generated narrative text.

In the exemplary embodiment, the user or system may also select and/ordefine logic for use when the branch alternative to the desiredevaluation occurs. In a non-limiting example, if the user creates a setof branches that will create narrative text based upon the evaluationresult being TRUE, the user may also specify conditions and logic forthe system performance if the evaluation result is FALSE. This logic maybe added as an “else” branching 532 and the user may create logic to beperformed for the conditions associated with the branch alternativeevaluation. The user selects and enters conditions for the alternativebranch evaluation 532 in the same manner as the conditions entered andselected for the primary branch evaluation.

With regard to FIG. 6, this figure presents an exemplary screen shot ofa narrative text editor having post detail control consistent withcertain embodiments of the present invention. In a non-limiting example,all branches may be collapsed to present a display of the code language600 created from the selection and definition of the conditions so as topermit the user to utilize the system from a code-style point of view.

While certain illustrative embodiments have been described, it isevident that many alternatives, modifications, permutations andvariations will become apparent to those skilled in the art in light ofthe foregoing description.

What is claimed is:
 1. A method for generating data driven naturallanguage text, comprising: receiving data from one or more data sources;grouping data in accordance with a pre-defined scope, when grouping isselected; an application server operative to evaluate a condition and anassociated origin structure to generate a set of customized segments ofnarrative text for each data scope; reviewing each segment of narrativetext associated with the origin structure, capturing the originstructure when a segment of narrative text is selected, and storing theorigin structure with optimization instructions for said narrative textin a log maintained on an electronic storage device; and publishing theone or more segments of narrative text.
 2. The method of claim 1, wherea data source further comprises a relational database, a non-relationaldatabase, an excel file, a file in JSON format, an XML file, aspreadsheet, or a file in a comma separated value (CSV) format.
 3. Themethod of claim 1, where the condition is evaluated based upon inputdata from the data source and associated logic of an origin structureand performed in a processor having access to the origin structure anddata sufficient to perform a Boolean evaluation and generate a Booleanresult for the condition.
 4. The method of claim 3, where the conditionfurther comprises one or more embedded branches to be evaluated.
 5. Themethod of claim 4, where the condition directs the creation of narrativetext in the form of natural language text strings.
 6. The method ofclaim 3, where the condition selection comprises varying selected dataconditions to modify portions of the generated narrative text withoutaffecting portions of the generated narrative text that are notassociated with the selected data conditions.
 7. The method of claim 1,further comprising a narrative editor display having a preview ofgenerated natural language text associated with the condition.
 8. Themethod of claim 1, where the narrative editor performs a comparison ofprevious input data values against current input data values todetermine the difference between the data values and generate anarrative text output in accordance with the data value differences. 9.A system for generating data driven natural language text, comprising: aprocessor comprising a plurality of software modules and an applicationserver module; one or more data stores maintained in the processor orwithin one or more alternate distributed processors available throughnetwork data connections; a software module operative receiving datafrom one or more data sources and grouping data in accordance with apre-defined scope, when grouping is selected; an application serveroperative to evaluate a condition and an associated origin structure togenerate a set of customized segments of narrative text for each datascope; reviewing each segment of narrative text associated with theorigin structure, capturing the origin structure when a segment ofnarrative text is selected, and storing the origin structure withoptimization instructions for said narrative text in a log maintained onan electronic storage device; and publishing the one or more segments ofnarrative text.
 10. The system of claim 9, where a data source furthercomprises a relational database, a non-relational database, an excelfile, a file in JSON format, an XML file, a spreadsheet, or a file in acomma separated value (CSV) format.
 11. The system of claim 9, where thecondition is evaluated based upon input data from the data source andassociated logic of an origin structure and performed in a processorhaving access to the origin structure and data sufficient to perform aBoolean evaluation and generate a Boolean result for the condition. 12.The system of claim 11, where the condition further comprises one ormore embedded branches to be evaluated.
 13. The system of claim 12,where the condition directs the creation of natural language textstrings.
 14. The system of claim 11, where the condition selectioncomprises varying selected data conditions to modify portions of thegenerated narrative text without affecting portions of the generatednarrative text that are not associated with the selected dataconditions.
 15. The system of claim 9, further comprising a narrativeeditor display having a preview of generated natural language textassociated with the condition.
 16. The system of claim 9, where thenarrative editor performs a comparison of previous input data valuesagainst current input data values to determine the difference betweenthe data values and generate a narrative text output in accordance withthe data value differences.